using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NCT.Framework;

namespace VISS.API.Users {

    /// <summary>
    /// Contains info about user follow user
    /// </summary>
    [Serializable]
    public class UserFollowerEnt {

        #region Properties

        /// <summary>
        /// Gets or sets the follower user key.
        /// </summary>
        /// <value>The follower user key.</value>
        public string FollowerUserKey { get; set; }
        /// <summary>
        /// Gets or sets the followed user key.
        /// </summary>
        /// <value>The followed user key.</value>
        public string FollowedUserKey { get; set; }

        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public EUserGender Gender { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public DateTime BirthDate { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public byte Age { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public short CityID { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public string City { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public short CountryID { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public string Country { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public short EducationID { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public string Education { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public short JobID { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public string Job { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public int ImageCount { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public string Blast { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public string AvatarFileName { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public int AvatarImageStoreID { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public EUserAvatarStatus AvatarStatus { get; set; }
        /// <summary>
        /// This fields is using for display information.
        /// </summary>

        /// <summary>
        /// This fields is using for display information.
        /// </summary>
        public DateTime DateCreated { get; set; }

        #endregion

        #region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="UserFollowerEnt"/> class.
        /// </summary>
        public UserFollowerEnt() {
            FollowerUserKey = string.Empty;
            FollowedUserKey = string.Empty;
            DateCreated = DateTimeUtils.MinValue;
        }

        #endregion
    }

    /// <summary>
    /// This Entity is only used for Noel Event
    /// </summary>
    [Serializable]
    public class EvtNoelUserFollowerEnt : UserFollowerEnt {

        #region Properties

        /// <summary>
        /// Gets or sets a value indicating whether [go out].
        /// </summary>
        /// <value><c>true</c> if [go out]; otherwise, <c>false</c>.</value>
        public bool GoOut { get; set; }

        #endregion

        #region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="EvtNoelUserFollowerEnt"/> class.
        /// </summary>
        public EvtNoelUserFollowerEnt()
            : base() {
            GoOut = false;
        }

        #endregion
    }
}